/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package modulos.recordatorio.vista;

import basedatos.OperacionesBD;
import java.util.Calendar;
import modulos.recordatorio.modelo.Recordatorio;
import modulos.usuario.modelo.Usuario;
import vista.frmPrincipal;
import vista.modelo.Calendario;
import vista.modelo.Mensaje;
import vista.modelo.OperacionesVarias;

/**
 *
 * @author francisco
 */
public class FrmRecordatorio extends javax.swing.JInternalFrame {

    Calendar fecha;
    Recordatorio record;
    int indice;

    /**
     * Creates new form FrmRecordatorio
     */
    public FrmRecordatorio() {
        initComponents();
        OperacionesVarias.cerrarVentanaEscape(this);
    }

    public FrmRecordatorio(Calendar fecha) {
        initComponents();
        OperacionesVarias.centrar(this);
        this.fecha = fecha;
        poneFecha();
    }

    //Para modificar
    public FrmRecordatorio(Recordatorio r, int indice) {
        initComponents();
        OperacionesVarias.centrar(this);
        btnGuardar.setText("Modificar");
        record = r;
        fecha = r.getFechaHora();
        poneFecha();
        txtEvento.setText(record.getTitulo());
        txtDescripcion.setText(record.getDetalle());
        spHora.setValue(fecha.get(Calendar.HOUR_OF_DAY));
        spMinuto.setValue(fecha.get(Calendar.MINUTE));
        ponerSeleccionado(record.getRecordar());
        this.indice = indice;
    }

    private void poneFecha() {
        String fechita = Calendario.diasCalendario[fecha.get(Calendar.DAY_OF_WEEK) - 1]
                + " " + fecha.get(Calendar.DAY_OF_MONTH) + " de "
                + Calendario.mesesCalendario[fecha.get(Calendar.MONTH)].toLowerCase()
                + " del " + fecha.get(Calendar.YEAR);
        lblFecha.setText(fechita);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        lblFecha = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        spHora = new javax.swing.JSpinner();
        jLabel5 = new javax.swing.JLabel();
        spMinuto = new javax.swing.JSpinner();
        jLabel6 = new javax.swing.JLabel();
        txtEvento = new javax.swing.JTextField();
        jLabel7 = new javax.swing.JLabel();
        btnGuardar = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        txtDescripcion = new javax.swing.JTextArea();
        jLabel2 = new javax.swing.JLabel();
        cbRecord = new javax.swing.JComboBox();

        setClosable(true);
        setFrameIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/kword.png"))); // NOI18N
        getContentPane().setLayout(null);

        jLabel1.setText("  Hora:");
        getContentPane().add(jLabel1);
        jLabel1.setBounds(20, 60, 90, 20);

        lblFecha.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        getContentPane().add(lblFecha);
        lblFecha.setBounds(90, 20, 390, 30);

        jLabel3.setText("Fecha :");
        getContentPane().add(jLabel3);
        jLabel3.setBounds(30, 30, 90, 20);
        getContentPane().add(jLabel4);
        jLabel4.setBounds(90, 20, 190, 20);

        spHora.setModel(new javax.swing.SpinnerNumberModel(0, 0, 23, 1));
        getContentPane().add(spHora);
        spHora.setBounds(90, 50, 50, 30);

        jLabel5.setFont(new java.awt.Font("DejaVu Sans", 1, 14)); // NOI18N
        jLabel5.setText("  :");
        getContentPane().add(jLabel5);
        jLabel5.setBounds(140, 50, 20, 30);

        spMinuto.setModel(new javax.swing.SpinnerNumberModel(0, 0, 59, 1));
        getContentPane().add(spMinuto);
        spMinuto.setBounds(170, 50, 50, 30);

        jLabel6.setText(" Descripcion:");
        getContentPane().add(jLabel6);
        jLabel6.setBounds(20, 110, 110, 30);
        getContentPane().add(txtEvento);
        txtEvento.setBounds(90, 80, 390, 30);

        jLabel7.setText(" Evento:");
        getContentPane().add(jLabel7);
        jLabel7.setBounds(20, 80, 70, 30);

        btnGuardar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/filesave.png"))); // NOI18N
        btnGuardar.setText("Guardar");
        btnGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnGuardarActionPerformed(evt);
            }
        });
        getContentPane().add(btnGuardar);
        btnGuardar.setBounds(130, 260, 110, 27);

        btnCancelar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/delete.png"))); // NOI18N
        btnCancelar.setText("Cancelar");
        btnCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarActionPerformed(evt);
            }
        });
        getContentPane().add(btnCancelar);
        btnCancelar.setBounds(250, 260, 110, 27);

        txtDescripcion.setColumns(20);
        txtDescripcion.setLineWrap(true);
        txtDescripcion.setRows(5);
        jScrollPane1.setViewportView(txtDescripcion);

        getContentPane().add(jScrollPane1);
        jScrollPane1.setBounds(20, 137, 460, 110);

        jLabel2.setText("Recordar:");
        getContentPane().add(jLabel2);
        jLabel2.setBounds(240, 60, 90, 17);

        cbRecord.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "5 min antes", "10 min antes", "30 min antes", "1 hora antes" }));
        getContentPane().add(cbRecord);
        cbRecord.setBounds(310, 50, 170, 30);

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-498)/2, (screenSize.height-324)/2, 498, 324);
    }// </editor-fold>//GEN-END:initComponents

    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed
        dispose();
    }//GEN-LAST:event_btnCancelarActionPerformed

    private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGuardarActionPerformed
        if (btnGuardar.getText().equals("Guardar")) {
            if (!txtDescripcion.getText().isEmpty() && !txtEvento.getText().isEmpty()) {
                fecha.set(fecha.get(Calendar.YEAR), fecha.get(Calendar.MONTH),
                        fecha.get(Calendar.DAY_OF_MONTH),
                        Integer.parseInt(String.valueOf(spHora.getValue())),
                        Integer.parseInt(String.valueOf(spMinuto.getValue())));
                int num = recordar();
                fecha.add(Calendar.MINUTE, -num);
                record = new Recordatorio();
                record.setFechaHora(fecha);
                record.setTitulo(txtEvento.getText());
                record.setDetalle(txtDescripcion.getText());
                record.setCumplido(false);
                record.setRecordar(num);
                record.setUsuario(logueado);
                if (OperacionesBD.guardar(record)) {
                    Mensaje.datosGuardados();
                    txtDescripcion.setText("");
                    txtEvento.setText("");
                    spHora.setValue(0);
                    spMinuto.setValue(0);
                    OperacionesVarias.recordatorios.add(record);
                    dispose();
                } else {
                    Mensaje.datosNoGuardados();
                }

            } else {
                Mensaje.camposVacios();
            }
        } else if (btnGuardar.getText().equals("Modificar")) {
            if (!txtDescripcion.getText().isEmpty() && !txtEvento.getText().isEmpty()) {
                fecha.set(fecha.get(Calendar.YEAR), fecha.get(Calendar.MONTH),
                        fecha.get(Calendar.DAY_OF_MONTH),
                        Integer.parseInt(String.valueOf(spHora.getValue())),
                        Integer.parseInt(String.valueOf(spMinuto.getValue())));
                int num = recordar();
                fecha.add(Calendar.MINUTE, -num);
                record.setFechaHora(fecha);
                record.setTitulo(txtEvento.getText());
                record.setDetalle(txtDescripcion.getText());
                record.setCumplido(false);
                record.setUsuario(logueado);
                record.setRecordar(num);
                if (OperacionesBD.modificar(record)) {
                    Mensaje.datosModificados();
                    OperacionesVarias.recordatorios.set(indice, record);
                    dispose();
                } else {
                    Mensaje.datosNoModificados();
                }
            } else {
                Mensaje.camposVacios();
            }
        }

    }//GEN-LAST:event_btnGuardarActionPerformed
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnGuardar;
    private javax.swing.JComboBox cbRecord;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lblFecha;
    private javax.swing.JSpinner spHora;
    private javax.swing.JSpinner spMinuto;
    private javax.swing.JTextArea txtDescripcion;
    private javax.swing.JTextField txtEvento;
    // End of variables declaration//GEN-END:variables
    Usuario logueado = (Usuario) frmPrincipal.UsuarioLogueado.get(0)[1];

    private int recordar() {
        int r = 0;
        if (cbRecord.getSelectedIndex() == 0) {
            r = 5;
        } else if (cbRecord.getSelectedIndex() == 1) {
            r = 10;
        } else if (cbRecord.getSelectedIndex() == 2) {
            r = 30;
        } else if (cbRecord.getSelectedIndex() == 3) {
            r = 60;
        }
        return r;
    }

    private void ponerSeleccionado(int num) {

        if (num == 5) {
            cbRecord.setSelectedIndex(0);
        } else if (num == 10) {
            cbRecord.setSelectedIndex(1);
        } else if (num == 30) {
            cbRecord.setSelectedIndex(2);
        } else if (num == 60) {
            cbRecord.setSelectedIndex(3);
        }

    }
}
